/**
 * 
 */
package com.haier;

import java.util.Arrays;

/**
 * @author sky
 * 
 */
public class BubbleSort {
	public static void main(String[] args) {
		BubbleSort bubbleSort = new BubbleSort();
		int[] array = { 25, 36, 21, 45, 98, 13 };
		System.out.println(Arrays.toString(array));
		bubbleSort.bubbleSort(array);// 调用快速排序的方法
		System.out.println(Arrays.toString(array));// 打印排序后的数组元素
	}

	/**
	 * 原始的冒泡排序法,时间复杂度为O(n2)
	 * 
	 * @param array
	 */
	public void bubbleSort(int... array) {
		int length = array.length;
		for (int i = 0; i < length - 1; i++) {
			for (int j = 0; j < length - i - 1; j++) {// 内部循环的边界要比长度小一
				if (array[j] > array[j + 1]) {
					swap(j, j + 1, array);// 相邻的两个元素比较，将大的放到最右边
				}
			}
		}
	}

	/**
	 * 内部实现，用于交换数组的两个引用值
	 * 
	 * @param beforeIndex
	 * @param afterIndex
	 * @param arr
	 */
	private void swap(int oneIndex, int anotherIndex, int[] array) {
		int temp = array[oneIndex];
		array[oneIndex] = array[anotherIndex];
		array[anotherIndex] = temp;
	}
}
